import json
import os
import re

class JSONLoader:
    def __init__(self):
        self._data = {}

    def load_json(self, file_path: str):
        """从文件加载 JSON"""
        if not os.path.isfile(file_path):
            raise FileNotFoundError(f"{file_path} 文件不存在")
        with open(file_path, "r", encoding="utf-8") as f:
            content = f.read()
            # 修复可能的半格式化 JSON
            content = self.fix_json_string(content)
            self._data = json.loads(content)

    def fix_json_string(self, json_str: str) -> str:
        """修复半格式化 JSON（单引号、末尾多余逗号）"""
        fixed = json_str.replace("'", '"')
        fixed = re.sub(r',\s*([\]}])', r'\1', fixed)
        return fixed

    def get_key(self, key: str):
        """返回指定键的值，保证是合法 JSON"""
        if key not in self._data:
            raise KeyError(f"JSON 中没有找到键 '{key}'")
        return json.dumps(self._data[key], ensure_ascii=False, indent=2)  # 返回合法 JSON 字符串

# ====== 使用示例 ======
loader = JSONLoader()
loader.load_json(r"C:\pro\IT\Python\flaskPy\src\configsettings.json")

# 获取特定键名的值，输出合法 JSON
x_value = loader.get_key("sentenceData")
print(x_value)
